docker(code 您所在的位置:网站首页 tcp 8080端口 docker(code

docker(code

2023-03-18 17:37| 来源: 网络整理| 查看: 265

之前配置过一次code-server到腾讯云服务器上,效果还不错.但是不难发现使用过程中有以下问题:

服务器性能比较弱,跑代码速度和能力依赖于服务器暂时只能供一个独立空间,而且用户可以访问服务器的任意位置(当然对于个人来说还好)自己笨重的电脑因而闲置

之后,我又尝试使用花生壳内网穿透+虚拟机的模式,但是花生壳本身提供的服务速度很慢,而且受到流量的限制,购买新的流量包需要很多钱.

所以,最理想的状态是:

在任意地方联网都能访问有多个用户的独立空间可以充分发挥本地主机的性能花费最少的钱服务环境便于移植和复刻

根据考察,我决定使用如下配置:

本地主机的虚拟机Ubuntu 22.04 虚拟机配置: 12G内存 + 4核(8线程) + 64G存储之前的2核2G的腾讯云服务器 ubuntu 20.04

下面我将还原配置的过程.

目前只配置了http,没有配置https证书,后续将购买域名进行配置.虚拟机配置

虚拟机使用ubuntu 22.04,关于虚拟机的安装不再赘述.下面着重描述docker(code-server)配置过程.

docker 安装

这里我使用了官方安装脚本进行自动安装:

curl -fsSL https://get.docker.com | bash -s docker -mirror Aliyun # 也可使用国内的daocloud 进行一键安装 # curl -sSL https://get.daocloud.io/docker | sh

在这里只需等待安装完毕即可.

在docker中安装code-server

docker中提供了code-server镜像.

拉取code-server镜像

docker pull codercom/code-server

之后就可以配置容器了,

官网给出的docker配置code-server代码如下:

# This will start a code-server container and expose it at http://127.0.0.1:8080. # It will also mount your current directory into the container as `/home/coder/project` # and forward your UID/GID so that all file system operations occur as your user outside # the container. # # Your $HOME/.config is mounted at $HOME/.config within the container to ensure you can # easily access/modify your code-server config in $HOME/.config/code-server/config.json # outside the container. mkdir -p ~/.config docker run -it --name code-server -p 127.0.0.1:8080:8080 \ -v "$HOME/.config:/home/coder/.config" \ -v "$PWD:/home/coder/project" \ -u "$(id -u):$(id -g)" \ -e "DOCKER_USER=$USER" \ codercom/code-server:latest

为了使不同的用户有不同的工作空间,以及各自的密码,我对配置代码做了些调整:

# 该命令执行于code-server-8080文件夹中,执行后code-server-8080文件夹默认挂载到/home/coder/project作为用户自己的工作区 sudo docker run -it --name code-server-8080 -p 0.0.0.0:8080:8080 \ -v "$PWD:/home/coder/project" \ -u "$(id -u):$(id -g)" \ -e "DOCKER_USER=$USER" \ -e "PASSWORD=123" \ codercom/code-server:latest --bind-addr 0.0.0.0:8080 --auth password # 该命令执行与code-server-8081文件夹,执行后code-server-8081文件夹默认挂载到/home/coder/project sudo docker run -it --name code-server-8081 -p 0.0.0.0:8081:8081 \ -v "$PWD:/home/coder/project" \ -u "$(id -u):$(id -g)" \ -e "DOCKER_USER=$USER" \ -e "PASSWORD=321" \ codercom/code-server:latest --bind-addr 0.0.0.0:8081 --auth password 以上代码运行后会将终端阻塞,可以CTRL-C终止后,使用sudo docker start code-server-808x 后台运行.

完成配置后,尝试使用虚拟机中的浏览器进行访问.

code-server-8081code-server-8080

一切正常.

服务器配置

服务器的基础配置在之前的文章中已经提到,不再赘述.

FRP服务配置

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

在github中下载对应版本的包,并解压

或者使用命令完成操作,

# 创建文件夹 mkdir frp cd frp # 下载 wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz #解压 tar -zxvf frp_0.47.0_linux_amd64.tar.gz

服务器和虚拟机客户端的下载过程完全相同.

服务端配置vim frps.ini

我的配置如下:

[common] bind_addr = 0.0.0.0 bind_port = 8888 # vhost_http_port = 8888 token = xxxxxx dashboard_port = 8889 dashboard_user = admin dashboard_pwd = adminbind_addr : 绑定的地址,用于监听和转发bind_port : 绑定的端口,用于监听和转发(与虚拟机客户端通信的端口)vhost_http_port : 这里不用(指定公网监听端口)token: 客户端和服务端验证dashboard_port,dashboard_user,dashboard_pwd : frp提供了一个简易的管理工具,这里访问端口8889,并输入用户名和密码,就可以看到frp的服务记录frp dashboard

启动frp:

./frps -c frps.ini客户端配置sudo vim frpc.ini

相关配置如下:

[common] server_addr = x.x.x.x # 这里填服务器公网 server_port = 8888 token = xxxxxx # 这里填的token与服务端相同 [web1] type = tcp local_ip = 192.168.228.x # 这里填虚拟机的内网ip ,可以使用 ifconfig 查询 local_port = 8080 remote_port = 8080 custom_domains = x.x.x.x # 这里填服务器公网 [web2] type = tcp local_ip = 192.168.228.x # 这填虚拟机的内网ip local_port = 8081 remote_port = 8081 custom_domains = x.x.x.x # 这里填服务器公网[common] : 常规配置server_addr : 服务端ip地址server_port : 服务端监听端口,与前面的bind_port对应[web1]: 配置code-server-8080type: 类型,这里使用tcplocal_ip: 虚拟机的内网iplocal_port: 虚拟机开放的服务端口,这里对应code-server-8080的服务端口8080remote_port: 指服务端的访问端口,即访问服务器的8080端口相当于访问本机的local_port端口custom_domains: 这里还没有域名,直接填写服务器的公网ip[web2]:配置code-server-8081 (同[web1])

启动frp:

./frpc -c frpc.ini提示:1. 服务端和客户端启动的应用程序不同,服务端是frps(frp server),而客户端是frpc(frp client)2. 客户端配置ini最开始使用的type是http,但访问报错401,可能是证书配置的问题,因此改用tcp,估计配置域名后问题会解决

尝试使用公网访问两个code-server:

code-server-8080code-server-8081



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有